package com.aiwiown.snackmq.management.scaling;

import lombok.Builder;
import lombok.Getter;

/**
 * 定义自动调节策略的配置。
 */
@Getter
@Builder
public class ScalingPolicy {

    /**
     * 是否启用自动调节功能。
     */
    @Builder.Default
    private boolean enabled = false;

    /**
     * 触发限流的高负载阈值（例如，每秒处理的消息数 TPS）。
     */
    @Builder.Default
    private double highTpsThreshold = 10000.0;

    /**
     * 解除限流的低负载阈值。
     */
    @Builder.Default
    private double lowTpsThreshold = 2000.0;

    /**
     * 触发限流后的冷却时间（秒），在此期间内不再做任何调节决策。
     */
    @Builder.Default
    private int scaleDownCooldownSeconds = 300;

    /**
     * 解除限流后的冷却时间（秒）。
     */
    @Builder.Default
    private int scaleUpCooldownSeconds = 600;

    /**
     * 检查系统指标的周期（秒）。
     */
    @Builder.Default
    private int checkIntervalSeconds = 60;
}